//
//  YZGTableViewDataSource.h
//  tableView解耦
//
//  Created by apple on 16/8/22.
//  Copyright © 2016年 JLXXYZG. All rights reserved.
//

#import <UIKit/UIKit.h>
#import "YZGTableViewCell.h"
#import "YZGHeaderView.h"
#import "YZGTableViewSectionItem.h"

@protocol YZGTableViewDataSource <UITableViewDataSource>

@optional

- (YZGTableViewRowItem *)tableView:(UITableView *)tableView objectForRowAtIndexPath:(NSIndexPath *)indexPath;

/**
 根据item或者(和)section获取cellClass

 @param tableView tableView
 @param section 指定的section
 @param item item
 @return cellClass
 */
-(Class)tableView:(UITableView *)tableView cellClassAtSection:(NSInteger)section forItem:(id)item;
/**
 *根据sectionHeaderItem获取sectionHeaderView
 */
-(YZGHeaderView *)tableView:(UITableView *)tableView sectionHeaderViewForHeaderItem:(id)sectionHeaderItem;
/**
 *获取tableViewHeaderView
 */
-(YZGHeaderView *)headerViewForTableView:(UITableView *)tableView;
@end



@interface YZGTableViewDataSource : NSObject<YZGTableViewDataSource>

@property (nonatomic , strong) NSMutableArray *sectionItems;

/**
 sectionHeaderView的Item
 */
@property (nonatomic , strong) id headerItem;

@property (nonatomic , weak) UIViewController<YZGTableViewCellDelegate> *delegateController;

-(instancetype)initWithController:(UIViewController<YZGTableViewCellDelegate> *)viewController;


/**
 添加count个sectionItem
 
 @param count sectionItem的个数
 */
-(void)addSectionItemOfCount:(NSInteger)count;

/**
 根据index返回指定的section的sectionItem
 
 @param section 第几个section
 @return 返回一个sectionItem
 */
-(YZGTableViewSectionItem *)sectionItemForSection:(NSInteger)section;

/**
 清除所有Section中的数据
 */
- (void)clearAllSectionItems;
/**
 清除dataSource中的所有数据
 */
- (void)clearAllItems;

@end
